
function smanPromptList(arrList,objInputId){

    this.style = "z-index:99999;background:#E8F7EB;border: 1px solid #CCCCCC;font-size:14px;cursor: default;"
    if (arrList.constructor!=Array){alert('smanPromptList初始化失败:第一个参数非数组!');return ;}
    window.onload =function() {

                                 arrList.sort(function(a,b){
                                          if(a.length>b.length)return 1;
                                         else if(a.length==b.length)return a.localeCompare(b);
                                         else return -1;
                                })
        var objouter=document.getElementById("__smanDisp") //显示的DIV对象
        var objInput = document.getElementById(objInputId); //文本框对象
        var selectedIndex=-1;
        var intTmp; //循环用的:)
        if (objInput==null) {alert('smanPromptList初始化失败:没有找到"'+objInputId+'"文本框');return ;}
            //文本框失去焦点
            objInput.onblur=function(){
                objouter.style.display='none';
            }
            //文本框按键抬起
            objInput.onkeyup=checkKeyCode;
            //文本框得到焦点
            objInput.onfocus=checkAndShow;
            function checkKeyCode(){
                    var keyCode=event.keyCode
                    if (keyCode==40||keyCode==38){ //下上
                        var isUp=false
                        if(keyCode==40) isUp=true ;
                        chageSelection(isUp)
                    }else if (keyCode==13){//回车
                        outSelection(selectedIndex);
                    }else{
                        checkAndShow()
                    }
               
                divPosition()
            }

            function checkAndShow(){
                        var strInput = objInput.value
						
                        if (strInput!=''){
							
                            divPosition();
						
                            selectedIndex=-1;
                            objouter.innerHTML ="";
                            
                            var s = 0;
                            for (intTmp=0;intTmp<arrList.length;intTmp++){
                            
                            	if(arrList[intTmp].toUpperCase().indexOf(strInput.toUpperCase())!=-1){
                            		addOption(arrList[intTmp]);
                            		s++;
                            	}
                            
                            	if(s > 20) break;
                            
                            }
                            objouter.style.display='';
                            
                            chageSelection(true);
                            
                        }else{
                            objouter.style.display='none';
                    }
                    function addOption(value){
                        objouter.innerHTML +="<div onmouseover=\"this.className='sman_selectedStyle'\" onmouseout=\"this.className=''\" onmousedown=\"document.getElementById('"+objInputId+"').value='" + value + "'\">" + value + "</div>"    
                    }
            }
            function chageSelection(isUp){
                if (objouter.style.display=='none'){
                    objouter.style.display='';
                }else{
                    if (isUp)
                        selectedIndex++
                    else
                        selectedIndex--
                }
                var maxIndex = objouter.children.length-1;
                if (selectedIndex<0){selectedIndex=0}
                if (selectedIndex>maxIndex) {selectedIndex=maxIndex}
                for (intTmp=0;intTmp<=maxIndex;intTmp++){

                    if (intTmp==selectedIndex){
                        objouter.children[intTmp].className="sman_selectedStyle";
                    }else{
                        objouter.children[intTmp].className="";
                    }
                }
            }
            function outSelection(Index){
            	if(objouter.children[Index] == null) return;
            	
                objInput.value = objouter.children[Index].innerText;
                objouter.style.display='none';
            }
            function divPosition(){
                objouter.style.top    =getAbsoluteHeight(objInput)+getAbsoluteTop(objInput);
                objouter.style.left    =getAbsoluteLeft(objInput); 
                objouter.style.width=getAbsoluteWidth(objInput);
            }
    }
    document.write("<div id='__smanDisp' style='position:absolute;display:none;" + this.style + "' onbulr> </div>");
    document.write("<style>.sman_selectedStyle{background-Color:#102681;color:#FFFFFF}</style>");
    function getAbsoluteHeight(ob){
	    
        return ob.offsetHeight;
    }
    function getAbsoluteWidth(ob){
        return ob.offsetWidth;
    }
    // get absolute Left position
//建立者:jiarry@hotmail.com
//返回对象位于窗口的绝对左边距离
function getAbsoluteLeft( ob ){
 if(!ob){return null;}
   var obj = ob;
   var objLeft = obj .offsetLeft;
   while( obj != null && obj .offsetParent != null && obj .offsetParent.tagName != "BODY" ){
     objLeft += obj .offsetParent.offsetLeft;
     obj = obj .offsetParent;
   }
 return objLeft ;
}

// get absolute TOP position
//建立者:jiarry@hotmail.com
//返回对象位于窗口的绝对上边距离
function getAbsoluteTop( ob ){
 if(!ob){return null;}
 var obj = ob;
 var objTop = obj .offsetTop;
 while( obj != null && obj .offsetParent != null && obj .offsetParent.tagName != "BODY" ){
   objTop += obj .offsetParent.offsetTop;
   obj = obj .offsetParent;
 }
 return objTop ;
}

}


